P1102 A-B 数对 - 洛谷

P1102 A-B 数对 - 洛谷

题目背景

出题是一件痛苦的事情!

相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!

题目描述

给出一串正整数数列以及一个正整数 C,要求计算出所有满足 AB=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。

输入格式

输入共两行。

第一行,两个正整数 N,C

第二行,N 个正整数,作为要求处理的那串数。

输出格式

一行,表示该串正整数中包含的满足 AB=C 的数对的个数。

样例 #1

样例输入 #1

4 1
1 1 2 3

样例输出 #1

3

提示

对于 75% 的数据,1N2000

对于 100% 的数据,1N2×1050ai<2301C<230

#include<bits/stdc++.h>
using namespace std;
int n, c, a[200010];
long long ans;
int main()
{
    ios::sync_with_stdio(0), cin.tie(nullptr);
    cin >> n >> c;
    for (int i = 1; i <= n;i++)
        cin >> a[i];
    sort(a + 1, a + 1 + n);
    for (int i = 1; i <= n;i++)
        ans += upper_bound(a + 1, a + 1 + n, a[i] + c) - lower_bound(a + 1, a + 1 + n, a[i] + c);
    cout << ans << '\n';
}